package day05;

/**
 * @author yzg
 * @desc TODO
 * @date 2025/4/14
 */

import java.util.Arrays;

/**
 * 1.赋值：  数据类型 变量名 = 值;
 * int a = 10; 基本数据类型赋值，赋的是二进制的数据
 * int[] arr = brr;  引用数据类型赋值，赋的是地址
 *
 * 2.值传递：将实际的值，传递给方法中的形参列表，就是赋值的过程
 *
 * 基本数据类型的值传递（String、包装器类型？）
 * 形参改变  实参不变
 *
 * 引用数据类型的值传递
 * 形参改变  实参改变
 *
 * String类型的值传递
 * 虽然String是引用数据类型，但是值传递遵循的是基本数据类型值传递的规则
 * 形参改变  实参不变
 */
public class ValuePass {
    public static void main(String[] args) {
            int i = 5;
            add(i);
            System.out.println("main() i=" + i);

            int[] arr = {1,2,3};
            alter(arr);
            System.out.println("main() arr=" + Arrays.toString(arr));

            String s = "hello";
            change(s);
            System.out.println("main() s=" + s);

    }

    public static void add(int a){
        a++;
        System.out.println("add() a="+a);
    }

    public static void alter(int[] brr){
        brr[0] = 4;
        System.out.println("change() brr="+ Arrays.toString(brr));
    }

    public static void change(String str){
        str += " world";
        System.out.println("change() str="+str);
    }
}
